From c80a612af79dedccca76bcdfa66b431f212263b1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 9 Aug 2020 10:53:48 -0400 Subject: [PATCH] gtk-demo: Improve filtering Show sidebar rows if any parent matches. This lets one search for "lists" and get just the subtree with all the listview demos. --- demos/gtk-demo/main.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c index 2b1c36f611..ad6043571f 100644 --- a/demos/gtk-demo/main.c +++ b/demos/gtk-demo/main.c @@ -766,6 +766,7 @@ demo_filter_by_name (GtkTreeListRow *row, GListModel *children; GtkDemo *demo; guint i, n; + GtkTreeListRow *parent; /* Show all items if search is empty */ if (!search_needle || !search_needle[0] || !*search_needle[0]) @@ -774,6 +775,17 @@ demo_filter_by_name (GtkTreeListRow *row, g_assert (GTK_IS_TREE_LIST_ROW (row)); g_assert (GTK_IS_FILTER_LIST_MODEL (model)); + /* Show a row if itself of any parent matches */ + for (parent = row; parent; parent = gtk_tree_list_row_get_parent (parent)) + { + demo = gtk_tree_list_row_get_item (parent); + g_assert (GTK_IS_DEMO (demo)); + + if (filter_demo (demo)) + return TRUE; + } + + /* Show a row if any child matches */ children = gtk_tree_list_row_get_children (row); if (children) { @@ -792,10 +804,7 @@ demo_filter_by_name (GtkTreeListRow *row, } } - demo = gtk_tree_list_row_get_item (row); - g_assert (GTK_IS_DEMO (demo)); - - return filter_demo (demo); + return FALSE; } static void -- 2.30.2